#include "data_play_ui.h"
#include "lvgl.h"
#include <stdio.h>

// 全局变量
static lv_obj_t *recv_textarea; // 接收区
static lv_obj_t *send_textarea; // 发送区
static lv_obj_t *baudrate_dropdown; // 波特率选择

// 发送按钮事件回调函数
static void send_btn_event_cb(lv_event_t *e) {
    lv_obj_t *btn = lv_event_get_target(e);
    const char *text = lv_textarea_get_text(send_textarea); // 获取发送区内容

    // 模拟串口发送数据
    printf("Sending: %s\n", text);

    // 将发送的数据显示在接收区
    lv_textarea_add_text(recv_textarea, "Sent: ");
    lv_textarea_add_text(recv_textarea, text);
    lv_textarea_add_text(recv_textarea, "\n");

    // 清空发送区
    lv_textarea_set_text(send_textarea, "");
}

// 清空按钮事件回调函数
static void clear_btn_event_cb(lv_event_t *e) {
    lv_obj_t *btn = lv_event_get_target(e);
    lv_textarea_set_text(recv_textarea, ""); // 清空接收区
}

// 波特率选择事件回调函数
static void baudrate_dropdown_event_cb(lv_event_t *e) {
    lv_obj_t *dropdown = lv_event_get_target(e);
    uint16_t selected = lv_dropdown_get_selected(dropdown); // 获取选中的选项索引
//    const char *baudrate = lv_dropdown_get_selected_str(dropdown); // 获取选中的选项文本

//    printf("Selected baudrate: %s\n", baudrate);
}

void lvgl_serial_assistant(void) {
    // 创建接收区
    recv_textarea = lv_textarea_create(lv_scr_act());
    lv_obj_set_size(recv_textarea, 240, 320 - 100);
    lv_obj_align(recv_textarea, LV_ALIGN_TOP_LEFT, 10, 10);
    lv_textarea_set_text(recv_textarea, "Received data will be shown here.\n");
//   lv_textarea_set_readonly(recv_textarea, true); // 设置为只读

//    创建发送区
    send_textarea = lv_textarea_create(lv_scr_act());
    lv_obj_set_size(send_textarea, 200, 40);
    lv_obj_align(send_textarea, LV_ALIGN_BOTTOM_LEFT, 10, -10);

    // 创建发送按钮
    lv_obj_t *send_btn = lv_btn_create(lv_scr_act());
    lv_obj_set_size(send_btn, 80, 40);
    lv_obj_align(send_btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10);
    lv_obj_t *send_label = lv_label_create(send_btn);
    lv_label_set_text(send_label, "Send");
    lv_obj_center(send_label);
    lv_obj_add_event_cb(send_btn, send_btn_event_cb, LV_EVENT_CLICKED, NULL);

    // 创建清空按钮
    lv_obj_t *clear_btn = lv_btn_create(lv_scr_act());
    lv_obj_set_size(clear_btn, 80, 40);
    lv_obj_align(clear_btn, LV_ALIGN_BOTTOM_RIGHT, -100, -10);
    lv_obj_t *clear_label = lv_label_create(clear_btn);
    lv_label_set_text(clear_label, "Clear");
    lv_obj_center(clear_label);
    lv_obj_add_event_cb(clear_btn, clear_btn_event_cb, LV_EVENT_CLICKED, NULL);

    // 创建波特率选择下拉菜单
    baudrate_dropdown = lv_dropdown_create(lv_scr_act());
    lv_dropdown_set_options(baudrate_dropdown, "9600\n19200\n38400\n57600\n115200");
    lv_obj_set_size(baudrate_dropdown, 100, 40);
    lv_obj_align(baudrate_dropdown, LV_ALIGN_TOP_RIGHT, -10, 10);
    lv_obj_add_event_cb(baudrate_dropdown, baudrate_dropdown_event_cb, LV_EVENT_VALUE_CHANGED, NULL);

    while(1){
        vTaskDelay(10);
    }
}

